/*
 * @Author: David Ma
 * @FilePath: \huaxia-real-estate-web\src\utils\request.ts
 * @LastEditors: David Ma
 * @Description: 该文件用于...
 * @Date: 2023-12-04 17:08:18
 */
// 引入axios
import axios from 'axios';
// 引入 NProgress
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import {Message} from "@arco-design/web-vue";
// 引入 Vuetify 3 的 VMessage

import { getToken } from "@/utils/auth";
const instance = axios.create({
  // 超时时间
  timeout: 4000,
})
// 设置基础路径
if (import.meta.env.VITE_API_BASE_URL) {
  instance.defaults.baseURL = import.meta.env.VITE_API_BASE_URL;
}
// 请求拦截器
instance.interceptors.request.use((config : any) => {
  // 发送请求进度条开始
  NProgress.start()
  const token = getToken()
  // 每次发送请求时 都带上HREtoken这个请求头给后端进行认证和解析jwt获取数据
  token ? config.headers["HREtoken"] = token : null;
  // 返回config
  return config;
}, function (error : any) {
  Message.error("请求错误")
  return Promise.reject(error);
});
// 响应拦截器
instance.interceptors.response.use((response : any) => {
  // 响应后进度条结束
  NProgress.done();
  // 返回响应数据
  return response;
}, function (error : any) {
  if (error.response.status == 504 || error.response.status == 404) {
    Message.error("服务器被吃了⊙﹏⊙∥")
  } else if (error.response.status == 403) {
    Message.error("权限不足,请联系管理员!")
  } else {
    Message.error("未知错误")
  }
  NProgress.done();
  // 返回响应错误
  return Promise.reject(error);
});

// 导出
export default instance
